#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000+10;
const double W = 1000.0;
int N;
bool vis[maxn];
double x[maxn], y[maxn], r[maxn];
double h1, h2;

inline bool adj(int u, int v){
    return r[u]+r[v] > sqrt((x[u]-x[v])*(x[u]-x[v]) + (y[u]-y[v])*(y[u]-y[v]));
}

bool dfs(int v){
    if(vis[v]) return false;
    vis[v] = true;

    if(y[v]-r[v]<0) return true;

    for (int i = 0; i < N; ++i)
        if(adj(i, v) && dfs(i)) return true;

    if(x[v]-r[v]<0){
        h1 = min(h1, y[v]-sqrt(r[v]*r[v] - x[v]*x[v]));
    }
    else if(x[v]+r[v]>W){
        h2 = min(h2, y[v]-sqrt(r[v]*r[v] - (W-x[v])*(W-x[v])));
    }

    return false;
}

void init(){
    h1 = h2 = W;
    memset(vis, false, sizeof(vis));
}

int main() {
    ios_base::sync_with_stdio(false);cin.tie(nullptr);
    while(cin >> N){
        init();
        for (int i = 0; i < N; ++i) {
            cin >> x[i] >> y[i] >> r[i];
        }

        bool down = false;
        for (int i=0; i<N; ++i){
            if((y[i]+r[i]>W) && dfs(i)) {down = true; break;}
        }

        if(down) cout << "IMPOSSIBLE\n";
        else cout << fixed << setprecision(2) << "0.00 " << h1 << " 1000.00 " << h2 <<  "\n";
    }
    return 0;
}